1
/****************************** Module Header ******************************\
2 * Module Name: MainPage.xaml.cs
3 * Project: CSSL3SocketClient
4 * Copyright (c) Microsoft Corporation.
6 * Silverlight socket client codebehind file.
8 * This source is subject to the Microsoft Public License.
9 * See http://www.microsoft.com/opensource/licenses.mspx#Ms-PL.
10 * All other rights reserved.
12 * THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND,
13 * EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED
14 * WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE.
15 \***************************************************************************/
18 using System
.Collections
.Generic
;
22 using System
.Windows
.Controls
;
23 using System
.Windows
.Documents
;
24 using System
.Windows
.Input
;
25 using System
.Windows
.Media
;
26 using System
.Windows
.Media
.Animation
;
27 using System
.Windows
.Shapes
;
28 using System
.Net
.Sockets
;
30 using System
.Threading
;
31 using CSSL3SocketClient
;
33 namespace CSSL3SocketClient
35 public partial class MainPage
: UserControl
39 InitializeComponent();
50 // Handle "Connect" button click event.
51 private void btnConnect_Click(object sender
, RoutedEventArgs e
)
53 btnConnect
.IsEnabled
= false;
54 OpenSocketClientAsync(tboxServerAddress
.Text
);
57 // Handle "Send" button click event.
58 private void btnSend_Click(object sender
, RoutedEventArgs e
)
64 _client
.SendAsync(tboxMessage
.Text
);
69 MessageBox
.Show("Exception occured when sending message:" + ex
.Message
);
76 void CloseSocketClient()
85 btnConnect
.IsEnabled
= true;
86 btnSend
.IsEnabled
= false;
89 // Create SocketClient and connect to server
91 // For convience, we use 127.0.0.1 address to connect socket server
92 // at local. To let client access socket server at differnt machine
93 // on network, input server ip address in textbox and click 'connect'.
94 // To let socket server accessible from network, please see the
95 // comment in CCSL3SocketServer.
96 bool OpenSocketClientAsync(string ip
)
100 var endpoint
= new IPEndPoint(
104 _client
= new SocketClient(
105 endpoint
.AddressFamily
,
110 _client
.ClientConnected
+= new EventHandler
<SocketMessageEventArgs
>(_client_ClientConnected
);
111 _client
.MessageReceived
+= new EventHandler
<SocketMessageEventArgs
>(_client_MessageReceived
);
112 _client
.MessageSended
+= new EventHandler
<SocketMessageEventArgs
>(_client_MessageSended
);
114 _client
.ConnectAsync(endpoint
);
119 MessageBox
.Show("Exception occured when Connecting Socket: " + ex
.Message
);
125 void _client_ClientConnected(object sender
, SocketMessageEventArgs e
)
127 Dispatcher
.BeginInvoke(delegate
129 // If connect successful, start receiving message
134 _client
.StartReceiving();
138 MessageBox
.Show("Exception occured when creating SocketClient:" + ex
.Message
);
143 btnConnect
.IsEnabled
= false;
144 btnSend
.IsEnabled
= true;
145 tbSocketStatus
.Text
= "Connected";
150 btnConnect
.IsEnabled
= true;
151 tbSocketStatus
.Text
= "Connect failed: " + e
.Error
.Message
;
156 // Handle message received event
157 void _client_MessageSended(object sender
, SocketMessageEventArgs e
)
159 Dispatcher
.BeginInvoke(delegate
162 tbSocketStatus
.Text
= "Sended";
165 tbSocketStatus
.Text
= "Send failed: " + e
.Error
.Message
;
171 // Handle message sended event
172 void _client_MessageReceived(object sender
, SocketMessageEventArgs e
)
174 Dispatcher
.BeginInvoke(delegate
178 tbSocketStatus
.Text
= "Received";
179 lb1
.Items
.Insert(0, e
.Data
);
183 tbSocketStatus
.Text
= "Receive failed: " + e
.Error
.Message
;